Je soupçonne que la question est enracinée dans l'appel à Server.MapPath(fileupFile.FileName)
. La propriété FileName
est une propriété de commodité permettant d'indiquer le nom de fichier d'origine du contenu téléchargé sur le serveur. Il n'indique pas nécessairement l'emplacement ou le nom du fichier lorsque (et si) vous l'enregistrez sur le serveur.
Il semblerait que vous ayez toujours besoin de recevoir le fichier côté serveur et de l'enregistrer sur le disque. Il y a plusieurs façons de le faire. La méthode SaveAs()
est peut-être la plus simple, mais vous avez également les propriétés FileBytes
et FileContent
qui vous permettent d'accéder au fichier téléchargé sous la forme d'un tableau d'octets ou d'un flux, respectivement.
Si vous enregistrez d'abord le document sur votre disque dur, puis construisez votre chaîne de connexion, je crois que cela va résoudre le problème.
Voici un exemple simple d'enregistrement d'un fichier téléchargé. On suppose que le dossier « ~/Documents » a accordé les autorisations d'écriture de processus de travail IIS (ou que vous utilisez l'usurpation d'identité et votre utilisateur authentifié dispose des autorisations d'écriture):
var targetfilepath = Path.Combine(Server.MapPath(~/Documents), fileupFile.FileName);
fileupFile.SaveAs(targetfilepath);
var connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + targetfilepath + ";Extended Properties=Excel 12.0";
// ...
Bonne chance.
Par ailleurs, et vous savez peut-être, il y a une excellente référence sur les propriétés de chaîne de connexion Excel 2007 à connectionstrings.com: http://connectionstrings.com/excel-2007
Merci! Je l'ai ajusté légèrement en retirant le "~/Documents" dans le chemin targetfile et en mettant dans le fileupFile.FileName. Voici ce que c'est maintenant: var targetfilepath = Path.Combine (Server.MapPath (fileupFile.FileName)); – loreedee